有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android程序中的Java语法WRT静态方法

我通常做Windows/C#/C++编程,但我涉猎过Android,所以我被要求查看Android程序来修复其中的一个错误。我没有重新设计它的任务,所以静态的东西是静态的

问题在于:在一个活动中,它有一个公共静态方法。它还有所有常用的非静态方法。这个特殊活动类有一个实例

我希望能够对这个活动类调用一些非静态方法,并从静态方法访问它的一些数据。显然如果我直接这么做

Cannot make a static reference to the non-static method ...

我假设在使用this或某些上下文的onStart()或onCreate()方法期间,必须有一种方法将对活动类的特定实例的引用隐藏在某个全局公共场所,然后在静态方法中使用该方法进行调用,例如

myStoredClassInstance.aNonStaticMethod();

。。。但我不知道语法。有人能帮我吗

PS在你说这是这个的重复之前:calling non-static method in static method in Java注意,这个问题是关于调用一个单独类的非静态方法,所以答案涉及动态创建该类的新实例。在我的例子中,我想知道访问现有特定类的语法


共 (1) 个答案

  1. # 1 楼答案

    这似乎对我有用

    创建一个类成员

    private static MyActivity myActivityClassInstance = null;
    

    onCreate()

    myActivityClassInstance = this;
    

    在同一类的静态方法中

    if (myActivityClassInstance != null)  {
        myActivityClassInstance.myNonStaticMethod();
    }
    

    我将它包装在一个null测试中,因为它可能在调用onCreate()之前被调用。另一方面,onCreate()恰好是我被要求修补的程序中发生的第一件事。如果你对你的项目有更多的控制权,可能会有更好的地方放这个